package ace.cmp.spring.data.jdbc.querydsl.core.repository.handler;

import ace.cmp.spring.data.jdbc.querydsl.core.model.PropertyRelation;
import com.querydsl.core.types.Expression;

/**
 * @author caspar
 * @date 2024/6/26 16:03 创建版本号
 */
public interface QuerydslVersionGenerator {

  /**
   * 生成新的版本号
   *
   * @param entity           实体对象
   * @param propertyRelation 属性值类型
   * @return 版本号
   */
  Object generateNewValue(Object entity, PropertyRelation propertyRelation);

  /**
   * 根据提交的版本号，生成版本号sql表达式
   *
   * @param entity           实体对象
   * @param value            属性值
   * @param propertyRelation 属性值类型
   * @return 版本号
   */
  Expression<?> generateNewExpression(
      Object entity, Object value, PropertyRelation propertyRelation);
}
